A logic gate performs a logical operation on one or more logic inputs and may produce one or more logic outputs. Because the output is also a logic-level value, an output of one logic gate can connect to the input of one or more other logic gates. The logic normally performed is Boolean logic and is most commonly found in digital circuits. Logic gates are primarily implemented electronically using diodes or transistors, but can also be constructed using electromagnetic relays, fluidics, optics, molecules or mechanical elements.
In electronic logic, a logic level is represented by a voltage or current. Each logic gate requires power so that it can source and sink currents to achieve the correct output voltage.
Several techniques for selecting gate sizes in a logic block are known. Some of these techniques explicitly enumerate timing paths within the logic block and are thus computationally intensive. Other techniques apply heuristics and are thus less rigorous in achieving power optimization or required timing constraints.